import Vue from 'vue'
import App from './App.vue'
import router from './router'
import  './assets/css/comment.css'
import  './plugins/vant.js'
import axios from 'axios'
import { Toast } from 'vant'


//设置请求基地址
axios.defaults.baseURL = 'http://127.0.0.1:3000';
//每次请求携带token
axios.interceptors.request.use(info=>{
  info.headers.Authorization = localStorage.getItem('token')
  return info
})
axios.interceptors.response.use(res=>{
  
  // 对获取的数据进行处理
  const {statusCode, message} = res.data
  
  if (statusCode === 401) {
    // 处理错误，在入口文件如果想要使用 vant ui 弹出窗口、
    // 这里没有 this 也没有 $toast
    // 可以使用单独引入的方式，只使用 Toast
    Toast.fail('用户信息校验失败，重新登录')
    localStorage.removeItem('token')
    localStorage.removeItem('userId')
    router.replace('/login')
  }
  
  // res 是每次请求得到的结果，相当于.then 的 res 还没到达之前在这里被拦住了
  // 拦截器把结果拦住，卡死整个执行过程，执行完我们要的函数以后， 必须 return 出去放行
  // 相当于路由守卫 next
  return res
})
Vue.config.productionTip = false
Vue.prototype.$http = axios

//导航守卫
// 导航守卫只能判断是否有携带token，并不能判断token是否真实
router.beforeEach((to,from,next)=>{
  
  const token= localStorage.getItem('token');
  if(!(to.path === '/login')&& !(to.path === '/register')){
    if(!token){
      return next('/login')
    }
  }
  next()
})


new Vue({
  router,
  render: function (h) { return h(App) }
}).$mount('#app')
